#include "esptim.h"
#include "led.h"

/********************************************************
 * @brief       初始化高精度系统定时器（ESP_TIMER）
 * @param       tps: 定时器周期，以微妙为单位（μs），以一秒为定时器周期来执行一次定时器中断，
 *                   那此处tps = 1s = 1000000μs
 * @retval      无
 ***********************************************************/

void esptim_int_init(uint64_t tps)
{
    esp_timer_handle_t esp_tim_handle;                      /* 定时器回调函数句柄 */

    /* 定义一个定时器结构体 */
    esp_timer_create_args_t tim_periodic_arg = {
        .callback = &esptim_callback,                       /* 设置回调函数 */
        .arg = NULL,                                        /* 不携带参数 */
    };
    //参数1：系统定时器配置参数，参数2系统定时器句柄
    esp_timer_create(&tim_periodic_arg, &esp_tim_handle);   /* 创建一个事件 */
    //参数1：系统定时器句柄，参数2：定时周期
    esp_timer_start_periodic(esp_tim_handle, tps);          /* 每周期内触发一次 */
}

/**
 * @brief       定时器回调函数
 * @param       arg: 不携带参数
 * @retval      无
 */
void esptim_callback(void *arg)
{
    LED_TOGGLE();
}